/**
 * 
localStorage和Pinia的异同点
‌存储方式‌：localStorage存储在浏览器本地，除非主动清除，否则会永久保存；而Pinia的数据存储在缓存（内存）中，读写更快，可以保存任意的JS类型数据和对象‌4。
‌使用场景‌：localStorage适用于存储少量的本地数据；Pinia适用于管理大量的共享状态，提供更高效的状态管理‌
 */

//import { defineStore } from "pinia";
//import { ref } from "vue";
/**
 第一个参数：名字，唯一性
 第二个参数：函数，函数的内部可以定义状态的所有内容 
 */
// export const useTokenStore = defineStore('token',()=>{
//   //定义状态内容
//   //1.响应式变量
//   const token = ref('');
//   //2.定义一个函数，修改token的数据
//   const setToken = (newToken)=>{
//     token.value = newToken;
//   }
//   //3.移除token的值
//   const removeToken = ()=>{
//     token.value = ''
//   }
//   return {
//     token,setToken,removeToken
//   }
// },{
//   //持久化存储
//   persist:true
// });

// value设置localStorage中的值，exp过期时间 毫秒
export const  setLocalStorageWithExpiry = (key, value, exp)=>{
    const now = new Date();
    //默认两小时
    if (exp === null || exp === undefined){
        exp = 1000*60*60*2
     }
    // ttl是过期时间（单位：毫秒）
    const item = {
      value: value,
      expiry: now.getTime() + exp,
    };
     localStorage.setItem(key, JSON.stringify(item));
    //localStorage.setItem(key, item);
  };

  // 获取localStorage中的值
export const  getLocalStorageWithExpiry = (key)=>{
    const itemStr = localStorage.getItem(key);
    console.log(itemStr);
    if (!itemStr) {
      return null;
    }
    // 有一定危险性，某些个token值转换失败
    const item = JSON.parse(itemStr);
    const now = new Date();
    if (now.getTime() > item.expiry) {
      localStorage.removeItem(key);
      return null;
    }
    return item.value.replaceAll("\"",'');
  }